#!/bin/bash
#eliminamos los archivos que se generaron anteriormente
rm palabras.out
rm mensaje.out
rm cantidad.out
filename="letrero.in"
filesize=$(cat $filename | wc -l) #obtenemos la cantidad de lineas del archivo de entrada y generamos el primer ciclo para las lineas
for (( i=1; i<=$(( $filesize )); i+=1 ))  
do
    line=$(sed $i'q;d' $filename)
    sline="$(echo $line | wc -w)" 
    word=($line)      #obtenemos la linea a revisar
    declare finalword #la linea final que se mostrara
    declare cola      #la cola donde almacenaremos lo que no coincida de la palabra
    declare primera   #la primera palabra donde almacenaremos lo que vayamos concatenando 
    
    final=$(( $sline-2 ))        #segundo ciclo para comparar las palabras
    for (( j=1; j<$(( $sline ))-1; j+=1 )) 
    do
        sprimera="$(echo ${#word[$j]})"     
        ssegunda="$(echo ${#word[$j+1]})"
        if [[ $j == 1 ]]
        then
            primera="${word[$j]}"
        fi
        segunda="${word[$j+1]}"
        declare aux
        cola=""
        while [ $ssegunda != 0 ];
        do
            if [[ "$primera" == *"$segunda" ]]
            then
                #concatenar cola a primera, porque si hacen match segunda ya es parte de cola
                primera=$primera$cola
                let ssegunda=0
                if [[ $j == $final ]]
                then
                    echo $primera >> palabras.out          #imprimimos en el archivo de salida de las palabras
                    echo ${#primera} >> cantidad.out       #contamos el largo e imprimimos en el archivo de salidad de la cantidad de caracteres
                    finalword=$finalword" "$primera #agregamos la nueva palabra al final de la linea que dara al archivo final mensaje 
                fi
            else
                if [[ $ssegunda == 1 ]]
                then
                    primera=$primera" "$segunda$cola
                    let ssegunda=0
                    if [[ $j == $final ]]
                    then
                        echo $primera >> palabras.out
                        echo ${#primera} >> cantidad.out
                        finalword=$finalword" "$primera
                    fi
                else
                    #cortar ultima letra a segunda
                    #guardar ultima letra en cola
                    cola=${segunda:${#segunda}-1:1}$cola
                    segunda=${segunda:0:-1}
                    let ssegunda="$(echo ${#segunda})"
                fi
            fi
        done   
    done    
done
echo $(((${#finalword})-1)) >> mensaje.out   
echo $finalword >> mensaje.out             #escribimos la oracion entera en el mensaje.out


